home *** CD-ROM | disk | FTP | other *** search
/ 17 Bit Software 3: The Continuation / 17-Bit_The_Continuation_Disc.iso / arug / arug 26 / spacelog / spacelog1.0 (.txt) < prev    next >
AmigaBASIC Source Code  |  1994-01-27  |  10KB  |  381 lines

  1. REM * Manned Space Log 1.0 (c) Gene Heitman 05/02/88         
  2. REM *                                                        
  3. REM * mission$ - is a matrix containing the mission data     
  4. REM * pt% - points to elements in mission$ matrix            
  5. REM * fld$ - contains the labels for the fields in m$        
  6. REM * fldlen% - lengths of each of the fields                
  7. REM * veh$ - data for vehicle totals                         
  8. REM * veh% - contains actual vehicle totals                  
  9. REM * annual% - contains the annual mission totals           
  10. REM * final% - contains the final mission totals             
  11. CLEAR ,97000,3000
  12. WIDTH 80
  13. OPTION BASE 1
  14. DIM mission$(360,11),pt%(360),fld$(11),fldlen%(11),veh$(38,3),veh%(38),annual%(30,2),final%(2)
  15. fld$(1)="Mission":fld$(2)="Nation":fld$(3)="Date":fld$(4)="Site"
  16. fld$(5)="Vehicle":fld$(6)="Weight (LBS)":fld$(7)="Period (MIN)"
  17. fld$(8)="Perigee (MI)":fld$(9)="Apogee (MI)":fld$(10)="Inclination (DEG)"
  18. fld$(11)="Remarks"
  19. fldlen%(1)=19:fldlen%(2)=4:fldlen%(3)=8:fldlen%(4)=8:fldlen%(5)=18
  20. fldlen%(6)=6:fldlen%(7)=5:fldlen%(8)=5:fldlen%(9)=5:fldlen%(10)=5
  21. fldlen%(11)=37
  22. CLS
  23. PRINT "Manned Space Log 1.0 (c) 1988 by Gene Heitman"
  24. PRINT
  25. loaddata:
  26.  PRINT "Loading mission data - please wait."
  27.  OPEN "SLMissions" FOR INPUT AS #1
  28.  count%=1
  29.  WHILE NOT EOF(1)
  30.   FOR fld%=1 TO 11
  31.    INPUT# 1,mission$(count%,fld%)
  32.   NEXT fld%
  33.   pt%(count%)=count%
  34.   count%=count%+1
  35.  WEND
  36.  CLOSE #1
  37.  count%=count%-1   
  38. definemenu:
  39.  MENU 1,0,1,"Change File"
  40.   MENU 1,1,1,"Add New Mission"
  41.   MENU 1,2,1,"Change Mission"
  42.   MENU 1,3,1,"Delete Mission"
  43.   MENU 1,4,1,"Save Changes"
  44.  MENU 2,0,1,"List Missions"
  45.   MENU 2,1,1,"All Missions"
  46.   MENU 2,2,1,"By Mission"
  47.   MENU 2,3,1,"By Nation"
  48.   MENU 2,4,1,"By Date"
  49.   MENU 2,5,1,"By Site"
  50.   MENU 2,6,1,"By Vehicle"
  51.  MENU 3,0,1,"Show Totals"
  52.   MENU 3,1,1,"Vehicle Table"
  53.   MENU 3,2,1,"Annual Table"
  54.   MENU 3,3,1,"Annual Graph"
  55.  MENU 4,0,1,"Quit"
  56.   MENU 4,1,1,"Quit SpaceLog"
  57.  CLS
  58.  PRINT "Press the right mouse button and choose a menu."
  59.  choice=0
  60.  WHILE choice<>4
  61.   choice=MENU(0)
  62.   ON choice GOSUB changefile,listmissions,showtotals,quit
  63.  WEND 
  64. quit:
  65.  MENU RESET   
  66.  CLS
  67.  END
  68. changefile:
  69.  ON MENU(1) GOSUB addnewmission,changemission,deletemission,savefile
  70.  RETURN
  71. listmissions:
  72.  subchoice=MENU(1)
  73.  ON subchoice GOSUB allmissions,bymission,bynation,bydate,bysite,byvehicle
  74.  RETURN
  75. showtotals:
  76.  ON MENU(1) GOSUB vehicletable,annualtable,annualgraph
  77.  RETURN
  78. addnewmission:
  79.  CLS
  80.  IF count%=360 THEN
  81.   PRINT "The SLMissions data file is full."
  82.  ELSE
  83.   count%=count%+1
  84.   pt%(count%)=count%
  85.   PRINT "Add new mission #";count%
  86.   PRINT
  87.   FOR var%=1 TO 11
  88.    PRINT "What is the new ";fld$(var%);
  89.    INPUT mission$(count%,var%)
  90.    mission$(count%,var%)=UCASE$(mission$(count%,var%))
  91.    IF LEN(mission$(count%,var%))>fldlen%(var%) THEN
  92.     mission$(count%,var%)=LEFT$(mission$(count%,var%),fldlen%(var%))
  93.     PRINT "The field is too long.  It is truncated to";fldlen%(var%);"characters."
  94.    END IF
  95.   NEXT var%
  96.   num1%=count%
  97.   GOSUB checknation
  98.   GOSUB checkdate
  99.   count$=RIGHT$(mission$(count%,3),2)+LEFT$(mission$(count%,3),2)+MID$(mission$(count%,3),4,2)
  100.   var%=1
  101.   comp$=""
  102.   WHILE (count$>=comp$) AND (var%<=count%-1)
  103.    comp$=RIGHT$(mission$(pt%(var%),3),2)+LEFT$(mission$(pt%(var%),3),2)+MID$(mission$(pt%(var%),3),4,2)
  104.    IF (count$<comp$) THEN 
  105.     var2%=count%
  106.     FOR var3%=count% TO var%+1 STEP -1
  107.      pt%(var3%)=pt%(var3%-1)
  108.     NEXT var3%
  109.     pt%(var%)=var2%
  110.    END IF
  111.    var%=var%+1   
  112.   WEND
  113.  END IF
  114.  PRINT
  115.  PRINT "Return to the menu."
  116.  RETURN
  117. changemission:
  118.  CLS
  119. getnumber:                 
  120.  PRINT "Change what mission # ( 1 -";count%;")";
  121.  INPUT num%
  122.  IF num%<1 OR num%>count% THEN getnumber
  123.  PRINT
  124.  GOSUB printdata
  125.  PRINT "The fields are:"
  126.  PRINT
  127.  FOR var%=1 TO 11
  128.   PRINT var%;"- ";fld$(var%)
  129.  NEXT var%
  130. getfield: 
  131.  PRINT  
  132.  INPUT "What field do you want to change ( 1 - 11 )";var2%
  133.  IF var2%<1 OR var2%>11 THEN getfield
  134.  PRINT
  135.  PRINT "The ";fld$(var2%);" is : ";mission$(pt%(num%),var2%)
  136.  PRINT "What is the new ";fld$(var2%);
  137.  INPUT mission$(pt%(num%),var2%)
  138.  mission$(pt%(num%),var2%)=UCASE$(mission$(pt%(num%),var2%))
  139.  num1%=pt%(num%)
  140.  GOSUB checknation
  141.  GOSUB checkdate
  142.  IF LEN(mission$(pt%(num%),var2%))>fldlen%(var2%) THEN 
  143.   mission$(pt%(num%),var2%)=LEFT$(mission$(pt%(num%),var2%),fldlen%(var2%))
  144.   PRINT
  145.   PRINT "The field is too long.  It is truncated to";fldlen%(var2%);"characters."
  146.  END IF
  147.  PRINT
  148.  PRINT "Return to the menu."
  149.  RETURN
  150. deletemission:
  151.  CLS
  152. getnum:   
  153.  PRINT "Delete what mission # ( 1 -";count%;")";
  154.  INPUT num%
  155.  PRINT
  156.  IF num%<1 OR num%>count% THEN getnum
  157.  GOSUB printdata
  158. getcorrect:
  159.  INPUT "Is this correct ( Y / N )";var$
  160.  var$=UCASE$(var$)
  161.  IF var$<>"Y" AND var$<>"N" THEN getcorrect
  162.  IF var$="Y" THEN mission$(pt%(num%),2)="X"
  163.  PRINT
  164.  PRINT "Return to the menu."
  165.  RETURN
  166. allmissions:
  167.  CLS
  168.  GOSUB bounds
  169.  GOSUB startkey
  170.  var$=""
  171.  num%=low%
  172.  WHILE (num%<=high%) AND (var$<>CHR$(13))
  173.   IF mission$(pt%(num%),2)<>"X" THEN 
  174.    GOSUB printdata
  175.    GOSUB getkey
  176.   END IF   
  177.   num%=num% + 1 
  178.  WEND
  179.  PRINT "Return to the menu."
  180.  RETURN
  181. bymission:
  182. bynation:
  183. bydate:
  184. bysite:
  185. byvehicle:
  186.  CLS
  187.  PRINT "What is the ";fld$(subchoice-1);
  188.  INPUT cp$
  189.  cp$=UCASE$(cp$)
  190.  PRINT
  191.  GOSUB bounds
  192.  GOSUB startkey
  193.  var$=""
  194.  num%=low%
  195.  WHILE (num%<=high%) AND (var$<>CHR$(13))
  196.   IF (mission$(pt%(num%),2)<>"X") AND (LEFT$(mission$(pt%(num%),subchoice-1),LEN(cp$))=cp$) THEN
  197.    GOSUB printdata
  198.    GOSUB getkey
  199.   END IF   
  200.   num%=num% + 1   
  201.  WEND
  202.  PRINT "Return to the menu."
  203.  RETURN
  204. vehicletable:
  205.  CLS
  206.  PRINT "Computing vehicle totals - please wait."
  207.  numveh%=0
  208.  FOR var2%=1 TO count%
  209.   IF mission$(pt%(var2%),2)<>"X" THEN
  210.    flg%=0
  211.    FOR var3%=1 TO numveh%
  212.     IF mission$(pt%(var2%),5)=veh$(var3%,1) THEN 
  213.      veh%(var3%)=veh%(var3%)+1
  214.      flg%=1
  215.     END IF   
  216.    NEXT var3%
  217.    IF flg%=0 THEN 
  218.     numveh%=numveh%+1
  219.     veh$(numveh%,1)=mission$(pt%(var2%),5)
  220.     veh$(numveh%,2)=mission$(pt%(var2%),2)
  221.     veh$(numveh%,3)=RIGHT$(mission$(pt%(var2%),3),2)
  222.     veh%(numveh%)=1
  223.    END IF
  224.   END IF
  225.  NEXT var2%
  226.  CLS
  227.  PRINT fld$(5);TAB(19);fld$(2);TAB(27);"Year";TAB(32);"#";TAB(40);fld$(5);TAB(59);fld$(2);TAB(67);"Year";TAB(72);"#"
  228.  FOR var4%=1 TO numveh% STEP 2
  229.   PRINT veh$(var4%,1);TAB(19);veh$(var4%,2);TAB(27);veh$(var4%,3);TAB(31);veh%(var4%);          
  230.   IF var4%+1<=numveh% THEN PRINT TAB(40);veh$(var4%+1,1);TAB(59);veh$(var4%+1,2);TAB(67);veh$(var4%+1,3);TAB(71);veh%(var4%+1)
  231.  NEXT var4%
  232.  PRINT
  233.  PRINT
  234.  PRINT "Return to the menu."
  235.  RETURN
  236. annualtable:
  237.  GOSUB computeannual
  238.  CLS
  239.  PRINT " Year";TAB(10);"USSR";TAB(20);"USA";TAB(30);"Year";TAB(40);"USSR";TAB(50);"USA"
  240.  FOR var%=1 TO last% STEP 2
  241.   PRINT var%+1900+first%;TAB(9);annual%(var%,1);TAB(19);annual%(var%,2);
  242.   IF var%+1<=last% THEN PRINT TAB(29);var%+1901+first%;TAB(39);annual%(var%+1,1);TAB(49);annual%(var%+1,2)
  243.  NEXT var%
  244.  PRINT
  245.  PRINT
  246.  PRINT "Total";TAB(20);"USSR =";final%(1);TAB(40);"USA =";final%(2)
  247.  PRINT
  248.  PRINT "Return to the menu."
  249.  RETURN
  250. annualgraph:
  251.  GOSUB computeannual
  252.  CLS
  253.  PRINT "  20|"
  254.  PRINT "    |"
  255.  PRINT "M   |"
  256.  PRINT "i   |"
  257.  PRINT "s   |";TAB(60);"Total"
  258.  PRINT "s 15|"
  259.  PRINT "i   |";TAB(60);"USSR =";final%(1)
  260.  PRINT "o   |";TAB(60);"USA =";final%(2)
  261.  PRINT "n   |"
  262.  PRINT "s   |"
  263.  PRINT "  10|";TAB(60);"Return"
  264.  PRINT "P   |";TAB(60);"to"
  265.  PRINT "e   |";TAB(60);"the"
  266.  PRINT "r   |";TAB(60);"menu."
  267.  PRINT "    |"
  268.  PRINT "Y  5|"
  269.  PRINT "e   |"
  270.  PRINT "a   |"
  271.  PRINT "r   |"
  272.  PRINT "    |"
  273.  PRINT "   0|"
  274.  PRINT "    ";
  275.  FOR var4%=first%+1 TO first%+last%+5 STEP 5
  276.   PRINT var4%;" ";
  277.  NEXT var4%
  278.  PRINT "  Year"
  279.  FOR var2%=2 TO last%
  280.   FOR var3%=1 TO 2
  281.    hor1=(var2%+4)*8-4
  282.    ver1=(20-annual%(var2%-1,var3%))*8+4
  283.    hor2=(var2%+5)*8-4
  284.    ver2=(20-annual%(var2%,var3%))*8+4
  285.    LINE (hor1,ver1)-(hor2,ver2),var3%
  286.   NEXT var3%
  287.  NEXT var2%
  288.  verussr%=(20-annual%(last%,1))+1
  289.  verusa%=(20-annual%(last%,2))+1
  290.  LOCATE verussr%,last%+7
  291.  PRINT "USSR"
  292.  LOCATE verusa%,last%+7
  293.  PRINT "USA"  
  294.  RETURN 
  295. computeannual:
  296.  CLS
  297.  PRINT "Computing annual totals - please wait."
  298.  FOR var%=1 TO 30
  299.   annual%(var%,1)=0
  300.   annual%(var%,2)=0
  301.  NEXT var%
  302.  final%(1)=0
  303.  final%(2)=0
  304.  first%=VAL(RIGHT$(mission$(pt%(1),3),2))-1
  305.  last%=VAL(RIGHT$(mission$(pt%(count%),3),2))-first%
  306.  FOR var2%=1 TO count%
  307.   var3%=0
  308.   IF (mission$(var2%,2)<>"X") AND (mission$(var2%,2)="USSR") THEN var3%=1
  309.   IF (mission$(var2%,2)<>"X") AND (mission$(var2%,2)="USA") THEN var3%=2
  310.   IF var3%<>0 THEN 
  311.    annual%(VAL(RIGHT$(mission$(var2%,3),2))-first%,var3%)=annual%(VAL(RIGHT$(mission$(var2%,3),2))-first%,var3%)+1
  312.    final%(var3%)=final%(var3%)+1
  313.   END IF
  314.  NEXT var2%
  315.  RETURN
  316. savefile:
  317.  CLS
  318.  PRINT "Saving mission data - please wait."
  319.  OPEN "SLMissions" FOR OUTPUT AS #1
  320.  FOR var2%=1 TO count%
  321.   IF mission$(pt%(var2%),2)<>"X" THEN
  322.    FOR fld%=1 TO 11
  323.     PRINT# 1,mission$(pt%(var2%),fld%)
  324.    NEXT fld%
  325.   END IF
  326.  NEXT var2%      
  327.  CLOSE #1
  328.  PRINT
  329.  PRINT "Return to the menu."   
  330.  RETURN
  331. checknation: 
  332.  WHILE (mission$(num1%,2)<>"USSR") AND (mission$(num1%,2)<>"USA") 
  333.   PRINT
  334.   PRINT "The Nation must be USA or USSR."
  335.   PRINT
  336.   PRINT "What is the new ";fld$(2);
  337.   INPUT mission$(num1%,2)
  338.   mission$(num1%,2)=UCASE$(mission$(num1%,2))
  339.  WEND
  340.  RETURN  
  341. checkdate:
  342.  WHILE (MID$(mission$(num1%,3),3,1)<>"/") OR (MID$(mission$(num1%,3),6,1)<>"/") OR (LEN(mission$(num1%,3))<>8)
  343.   PRINT
  344.   PRINT "The Date must be in MM/DD/YY format."
  345.   PRINT
  346.   PRINT "What is the new ";fld$(3);
  347.   INPUT mission$(num1%,3)
  348.  WEND
  349.  RETURN
  350. startkey:      
  351.  PRINT
  352.  PRINT "Hit the space bar to continue or the return key to quit."
  353.  PRINT
  354.  RETURN
  355. getkey:
  356.  var$=INKEY$
  357.  IF var$<>CHR$(13) AND var$<>CHR$(32) THEN getkey
  358.  RETURN
  359. bounds:
  360. asklow:   
  361.  PRINT "Start the list with what mission # ( 1 -";count%;")";
  362.  INPUT low%
  363.  IF low%<1 OR low%>count% THEN asklow
  364.  PRINT
  365. askhigh:   
  366.  PRINT "End the list with what mission # (";low%;"-";count%;")";
  367.  INPUT high%
  368.  IF high%<low% OR high%>count% THEN askhigh
  369.  RETURN
  370. printdata:
  371.  PRINT "Mission #";num%
  372.  PRINT mission$(pt%(num%),1);TAB(21);mission$(pt%(num%),2);TAB(26);
  373.  PRINT mission$(pt%(num%),3);TAB(36);mission$(pt%(num%),4);TAB(46);
  374.  PRINT mission$(pt%(num%),5);TAB(66);mission$(pt%(num%),6);" LBS"
  375.  PRINT mission$(pt%(num%),7);" MIN";TAB(11);mission$(pt%(num%),8);" MI";
  376.  PRINT TAB(21);mission$(pt%(num%),9);" MI";TAB(31);mission$(pt%(num%),10);
  377.  PRINT " DEG";TAB(41);mission$(pt%(num%),11)
  378.  PRINT
  379.  RETURN
  380.  
  381.